package com.hex.ds.hdrs.common.sort;

import cn.hutool.core.date.DateUtil;
import com.hex.ds.hdrs.common.constant.ErrorCode;
import com.hex.ds.hdrs.common.exception.BizException;
import com.hex.ds.hdrs.period.task.po.PeriodTask;
import lombok.extern.slf4j.Slf4j;


/**
 * 按时间最早先执行
 */
@Slf4j
public class SortByEarlierTs extends SortByStrategy {

    @Override
    public boolean compare(PeriodTask srcTask, PeriodTask targetTask) {
        log.debug("按时间最早先执行【SortByEarlierTs.compare】新增任务【{}】【{}】||比较任务【{}】【{}】",
                srcTask.getTaskCode(), srcTask.getBizDate(), targetTask.getTaskCode(), targetTask.getBizDate());
        try {
            //1. 先比较业务日期
            if (DateUtil.parse(srcTask.getBizDate()).before(DateUtil.parse(targetTask.getBizDate()))) {
                return true;
            } else if (DateUtil.parse(srcTask.getBizDate()).after(DateUtil.parse(targetTask.getBizDate()))) {
                return false;
            }

            //2. 若业务日期相同，则比较任务创建时间
            if (DateUtil.parse(srcTask.getCrtTs()).before(DateUtil.parse(targetTask.getCrtTs()))) {
                return true;
            } else {
                return false;
            }
        } catch (Exception e) {
            log.error("【SortByEarlierTs.compare】异常:{}", e.getMessage(), e);
            throw new BizException(ErrorCode.ERROR_888007);
        }
    }
}
